1. Field of the Invention
The invention described herein relates to communication between clients and a single component or resource.
2. Background Art
In digital circuit design, it is a common problem to have a single component that must be accessed by a number of clients. For example, a single memory device, such as a dynamic random access memory (DRAM), may provide memory resources for a number of clients. If the clients are not readily scheduled, or activity between clients and the single component is not otherwise controlled, then access to the component can be hampered by contention problems.
A number of solutions can be used to provide access to a single component, but many have shortcomings. To allow several clients to communicate with a single component, each client may be given its own physical channel to the single component. This might entail separate wiring between each client and the single component. This, however, represents an expensive solution. If implemented on an integrated circuit or in a printed circuit board, this requires significant area. Nor does this solve the problem of contention. Even if each client has its own physical channel to the single component, problems can arise when more than one client needs to access the component more or less simultaneously.
Another solution would be the use of a bus. Here, each client would need connectivity to the bus. Likewise, the single component would be connected to the bus. This addresses the problem of excessive wiring. The bus, however, now represents another resource, access which must be managed. Contention problems can arise when one or more clients seek to access the bus at the same time. Allocation of access to the bus can be managed through any of several well known algorithms. Access by clients to the bus may be based, for example, on a round robin process. Such algorithms, however, can be inflexible. There may be situations where one client has no need for the bus, while another client needs a large amount of bandwidth. Such conditions are not readily handled by a traditional bandwidth allocation processes. As a result, communications through a bus can be slow and inflexible. Moreover, the bus must be engineered to allow for the maximum amount of demand that the designer can envision. This allows the bus to service peak demands. Often, however, peak demand is not typical. More often, the requirements on the bus are well below the peak level. As a result, bus capacity will be wasted most of the time.
Another method for addressing the problem of providing access to a single component from multiple clients is the use of a daisy chain protocol. Here, given a number of clients that need to access a component, arbitration is provided to decide the client that will ultimately be given access to the component. A first and second client may need to access the component, in which case arbitration will decide which of the two clients remains in contention for the component. The winner among those two clients is then placed in competition with a third contending client. Arbitration is then provided between the third client and the survivor of the first arbitration. Again, a single surviving will be chosen. This survivor will then be put in contention with a fourth client. Again arbitration will be provided. This process is continued so that all clients are given an opportunity to contend for the access to the component.
Such a protocol, however, requires significant overhead. For example, in a situation where each client is seeking to store data at the single component, there needs to be space for temporary storage, while the data is stalled during arbitration. Moreover, there are issues as to the fairness of the outcome. At any given decision point in the process, for example, it is not known what requests from clients have been handled through arbitration previously, and what needs are yet to be considered later in the process. The process is essentially ignorant of past and future needs. This could be handled by reserving a time slot isochronously, but in the event that such a reserved slot is never used, the reservation represents a waste of bandwidth. This leads to lost efficiency.
There is a need, therefore, for a system and method that allows a number of clients to access a single component in such a way that minimizes wiring cost, and allows for fair and flexible access to the component.
Further embodiments, features, and advantages of the present invention, as well as the operation of the various embodiments of the present invention, are described below with reference to the accompanying drawings.